約 4,550,877 件
https://w.atwiki.jp/friio/pages/22.html
録画したTSファイル。それについてのチラシの裏 そもそもフリーオが作るTSファイルってなんぞや? TSファイルとはMPEG-2 TS(Transport Stream)形式のファイルのことである。TSとは、MPEG-2 PS(Program Stream)を、188バイトのパケットに分割したものである。PSがDVDなどの伝送条件の良いメディアに格納されることを前提としているのに対し、より伝送条件が悪い「放送」などのメディアに向くように、細かくパケット分割することで、多少の欠落が生じても早期に次の正しいパケットを見つけやすくしている。またTSには映像音声以外の情報も含めることが出来る。TS内の個々の情報は、パケット毎に付されるPID(Packet ID)によって区別される。 放送のTSコンテナの内部には、映像、音声、ワンセグ放送、降雨対応低画質放送、字幕放送、データ放送、番組情報、契約情報、暗号の鍵の種(ECM)情報、レコーダーなどの特定機種のファームウェア情報、など複数の情報が多重化され含まれている。メインとなる番組部分の、動画コーデックはMPEG-2、音声コーデックはAACである。音声2chや5.1chなど複数同時に含まれる場合もある。またワンセグ放送部分では、動画コーデックにはH.264/AVC、音声コーデックにはAAC LCが採用されている。地上デジタル放送では、HD画質1チャンネルとするか(12セグメント分を使用)、またはSD画質の最大3チャンネル(4セグメント×3を使用)とすることができ、一つのTSファイル内で同時に複数の番組が記録されている場合がある。(サブチャネル、マルチチャネル、サービスなどと呼ばれる。)さらにワンセグ放送(1セグ分を使用)を含む全13セグメントで供給される。 このようにTSファイルは、単純ではなく、多種多様な情報を含んだ幅が広い形式と言える。またデジタル放送の規格として、海外ではDVB規格/ATSC規格などがあり、ここでもTSは利用されている。しかし、日本のデジタル放送(ISDB)のTSは、独自の規格の部分もあるためか、外国産のTS対応の再生ソフトでは対応が充分でなく問題が発生するケースが少なくないのが現状である。 フリーオのTSファイルは、放送されている電波を復調し、MULTI2暗号を復号化、もしくはそのまま保存したものである。日本のデジタル放送において、映像・音声などのパケットにはMULTI2暗号化が行われているため、B-CASカードを使った復号化(ARIB STD-B25)が必須となる。(一部無料放送や緊急放送、ワンセグ放送などではMULTI2暗号化はされない。)また、天候やノイズや処理落ちなどによって一部の情報(パケット)が欠落(ドロップ)したりする場合が多々ある。TSは前述の通り、欠落が発生することを前提とした規格であるため、多少の欠落はノイズとなるがそれほど大問題ではない。また、B-CASカードが認識されないなどの理由で、一部パケットがMULTI2暗号化されたままとなるケースもある。 また、FriioViewの設定画面で「録画時に必要性のないデータを記録しない」にチェックを入れた場合、対象のサブチャネルとなる映像音声(と必須な情報)以外のパケットは全て捨てられファイルに記録されない点は注意が必要となる。 Windows上での動画ファイルの再生 Windows上では動画ファイルの再生にDirecShowを利用するソフトが多い。DirectShowの利点はデフォルトでは再生出来ない動画ファイル形式であっても、DirectShowFilterを追加することによって対応可能となる場合がある。フィルターには大きく分けて二つある。スプリッタと呼ばれる、映像や音声や字幕などその他の情報の多重化されたコンテナから、個々の映像と音声や字幕などのストリームを分離するもの。コーデックと呼ばれる、映像および音声のストリームの圧縮伸張を行うもの。その他に、字幕情報を映像と重ねるためのフィルターなども場合によっては必要となる。 Friioの標準ソフトでは、MPEG2のコーデックとして「MPV Decoder Filter」が添付されている。お好みによっては他のMPEG2コーデックを利用することも可能となっている。 TSを再生するには? とりあえず再生したければVLC media playerを使えばよい。TSスプリッタもMPEG2コーデックも内蔵しているため、別途それらを入れなくても再生可能であり、トラブルも比較的少ない。ただしDirecShowフィルタは利用できない。 http //www.videolan.org/vlc/download-windows.html MPC HC(Media Player Classic Homecinema)なども、TSスプリッタMPEG2コーデックを内蔵するため、TSファイルの再生が可能。ややTSの再生でのトラブルがある。内部フィルタを無効にし外部フィルタを使うことで解決する場合もある(しない場合もある)。 http //mpc-hc.sourceforge.net/ TSファイルのパケットに欠落(ドロップ)があったり、暗号化(スクランブル)が解けずそのままであったりする場合、ファイル再生に支障が出ることがある。また、番組の切れ目で映像や音声の形式が変わる場合があるため、形式変更に対応できない再生ソフト(やスプリッタ)では問題が多発する。たとえば、映像形式がHD⇔SDで変化したり、音声形式がステレオ⇔音声多重などで変化するケースなど。そのためプレイヤーの設定を変えてみたり、さまざまなTS再生ソフトやスプリッタを探して試してみるとよい。各種再生ソフトはwikiなどで紹介されているから参照すること。 また後述のTsSplitterなどで分割することで再生トラブルが解決する場合もある。 MPCでのTS再生の覚書 1.必要ならHaali Media SplitterなどTSスプリッタをインストールする 2.必要ならffdshowなどのコーデックをインストールする 3.MPCインストールMPCを起動 4.表示→オプション→内部フィルタのMPEG PS/TS/PVAなど適当にチェック 5.MPCを再起動TSファイルを読み込ませればおk 番外編:金曜ロードショーなどの2ヶ国語再生 1.上が行える状態にしておく 2.表示→オプション→音声切替→チャンネルマッピングを有効にするにチェック 3.日本語だけにしたい場合はFront L Rを1だけにチェック(逆の場合は2だけにチェック 4.見終わったらチャンネルマッピングを有効にするにチェックをはずしておく あと、VLCだとステレオ(モノラル)から二カ国語放送に切り替わった時に、うまく動かない場合があるので、Murdoc Cutterを使って前後(特に頭)を削ってみる。削らなくても「モノラル→ステレオ」なら、CM明けてからオーディオチャンネルを無効→有効に切り替えてオーティオトラックを変えたらOKな場合もある。 TSファイルのドロップやスクランブルを知る tsselectを使えば知ることができる。 http //www.marumo.ne.jp/db2008_5.htm#2 コマンドライン式なのでコマンドラインの使い方を理解すること。(慣れてしまえば、CUIのほうが便利なケースもあるので、無駄ではない。) scramble=0 drop=0でない部分があればドロップとスクランブルが出ている。 簡単な使い方としては、tsselect.exeと同じフォルダに適当なテキストファイルを作り、 tsselect.exe %1 pause と上の二行を書いて、(適当な名前).batと拡張子を変えて保存し、調べたいファイルをこのbatにドラッグアンドドロップすれば黒窓に表示される。 ちなみにドロップはどうにもならない。ドロップを削っても音ズレなどの原因になるので何もしないほうが良い。 TSファイルのスクランブル解除 一部、または全部がMULTI2暗号化されたままのTSファイルを復号化するためには、b25またはMulti2Decなどを使う。 b25は、ソースしかないので(vc2005expressなどで)ビルドする必要がある。 http //www.marumo.ne.jp/db2008_4.htm#9 Multi2Decは下記うpろだのどこかにある。 http //2sen.dip.jp/cgi-bin/friioup/upload.cgi (小ワザだが、フリーオはB-CASカードを挿さずに録画すると暗号TSが出来る。録画中の復号化を行わなければより低負荷な録画が行える。後で上記のソフトで復号化すること。) TSファイルから不要なデータを消したい 前述のとおりTSファイルには無駄なデータが多い(データ放送、ワンセグ、番組情報など)ため、ファイルサイズが肥大化している。しかし、FriioViewなどの設定で「録画に必要性のないデータを記録しない」にチェックしていると、MULTI2暗号の復号に必要な鍵の含まれるデータも失われるため、後で復号化することが出来なくなってしまう。もし一部暗号が残っていたときには、b25やMulti2Decで復号が出来なかったり、BS/CSでは契約情報がなく視聴できなくなったりする。そのため「録画に必要性のないデータを記録しない」にはチェックを入れず、保存したTSを正しく復号化した後、不要なデータを削除するようにすると良い。また、サブチャネルなどの任意のデータだけを取り出せば、再生のトラブルは少なくなる。 不要データの削除にはTsSplitterなどを使う。使い方は付属のreadme.txtを見ること。 TsSplitterは下記うpろだの過去ログ検索などで探すこと。 http //2sen.dip.jp/cgi-bin/friioup/upload.cgi ちなみにtsselectでも不要データの削除は可能だが、やや難易度が高い。 ■TS関連ツールのメモ TSのPIDを確認する TSReader Lite TSのドロップやスクランブルなどをチェックする tsselect Multi2Dec TSのスクランブルを解除 b25 Multi2Dec b25Decoder.dll TSの結合(ドロップの回復を試みる) tsmarge TSをサブチャネルや番組で分割 TSSplitter TsSplitter GUI TSの多重化解除(demux)など BonTsDemux TSをカット編集 Murdoc Cutter TSのファイル名を番組名などで変更 TsRename TSをパーシャルTSに変換する ts2pts
https://w.atwiki.jp/masaodepart/pages/37.html
毎日が厄日な人。器は割と小さい。 閃光の星というサイトを持っているが、最近は中国史に傾倒しすぎてほったらかし。なんということだ。 Twitter @LitterK サイト 閃光の星 コメント欄 名前 コメント
https://w.atwiki.jp/saint_elmo/pages/38.html
太字 は専用フォーマット、細字は再生可能、(括弧書き)はコーデックを別途インストール。 WMP wma,wmv (ogg) QuickTime mov RealPlayer rm VLC1.0 wma,wmv mov rm ogg VLC1.0 audio a52 aac ac3 dts flac m4a m4p mka mod mp1 mp2 mp3 oma oga spx wav wma wv xm video asf avi divx dv flv gxf m1v m2v m2ts m4v mkv mov mp4 mpeg mpeg1 mpeg2 mpeg4 mpg mts mxf nuv ogg ogm ogx ogv rmvb ts vob wmv other asx bin cue m3u pls vlc xspf FFDSHOW video xvid divx3 divx4 divx5 mpeg4v3 mpeg4v2 mpeg4v1 wmv1 audio mp2 mp3 ac3 aac dts
https://w.atwiki.jp/raysuntie/pages/75.html
Glitter 作詞 齋藤太賀 作曲・編曲 渡邉俊彦 歌 茶太 歌詞 Wish! あの空のカナタ Flip... 箒星の すっとぼやけていく 伝う線が震えるほど どこか切ない 高架下 川辺の小路 置いてかれた 影法師 とめどない時を今掴む 願いを唱えて 越えていけ未来(あす)へ The forever, It s in a Glitter まだ飛べる過去振り切ったら 澄んでいくヒカリを映すから 駆けていこう共に The forever, It s in a Glitter 取り戻せ生命(いのち)の強さ 澄んでいくヒカリを灯すから 永遠に ねえ僕等はいつか End... 目を瞑って すっとぼやけてく 日々の連鎖苦しいほど 今日を生きたい 春霞桜の並木 待ち合わせた橋の上 とめどない時が今進む 祈りを込めたら 超えていけ未来(あす)を Just for Freedom, It s in a Prayer まだ飛べる過去を力に 澄んでいくヒカリを届けるよ 今ここで 最果てに願う答え 信じる思いが 僕等運ぶ魔法の方舟 Ah… 越えていけ未来(あす)へ ただ一つ絶えぬ信念 取り戻せ生命(いのち)の強さ 澄んでいくヒカリを灯すから 超えていけ未来(あす)を The forever, It s in a Glitter まだ飛べる過去を力に 澄んでいくヒカリを届けるよ 永遠に
https://w.atwiki.jp/rsslink/pages/30.html
ITmedia +D サイトURL:http //plusd.itmedia.co.jp/ 最新記事 Mobile ┣ドコモ ┣au(KDDI) ┗ボーダフォン PCUPdate LifeStyle Games
https://w.atwiki.jp/touhoukashi/pages/34.html
【登録タグ A Alstroemeria Records Exserens - A selection of Alstroemeria Records For Your Pieces Harmony nomico アリスマエステラ 曲】 【注意】 現在、このページはJavaScriptの利用が一時制限されています。この表示状態ではトラック情報が正しく表示されません。 この問題は、以下のいずれかが原因となっています。 ページがAMP表示となっている ウィキ内検索からページを表示している これを解決するには、こちらをクリックし、ページを通常表示にしてください。 /** General styling **/ @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight 350; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/10/NotoSansCJKjp-DemiLight.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/9/NotoSansCJKjp-DemiLight.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/8/NotoSansCJKjp-DemiLight.ttf) format( truetype ); } @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight bold; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/13/NotoSansCJKjp-Medium.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/12/NotoSansCJKjp-Medium.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/11/NotoSansCJKjp-Medium.ttf) format( truetype ); } rt { font-family Arial, Verdana, Helvetica, sans-serif; } /** Main table styling **/ #trackinfo, #lyrics { font-family Noto Sans JP , sans-serif; font-weight 350; } .track_number { font-family Rockwell; font-weight bold; } .track_number after { content . ; } #track_args, .amp_text { display none; } #trackinfo { position relative; float right; margin 0 0 1em 1em; padding 0.3em; width 320px; border-collapse separate; border-radius 5px; border-spacing 0; background-color #F9F9F9; font-size 90%; line-height 1.4em; } #trackinfo th { white-space nowrap; } #trackinfo th, #trackinfo td { border none !important; } #trackinfo thead th { background-color #D8D8D8; box-shadow 0 -3px #F9F9F9 inset; padding 4px 2.5em 7px; white-space normal; font-size 120%; text-align center; } .trackrow { background-color #F0F0F0; box-shadow 0 2px #F9F9F9 inset, 0 -2px #F9F9F9 inset; } #trackinfo td ul { margin 0; padding 0; list-style none; } #trackinfo li { line-height 16px; } #trackinfo li nth-of-type(n+2) { margin-top 6px; } #trackinfo dl { margin 0; } #trackinfo dt { font-size small; font-weight bold; } #trackinfo dd { margin-left 1.2em; } #trackinfo dd + dt { margin-top .5em; } #trackinfo_help { position absolute; top 3px; right 8px; font-size 80%; } /** Media styling **/ #trackinfo .media th { background-color #D8D8D8; padding 4px 0; font-size 95%; text-align center; } .media td { padding 0 2px; } .media iframe nth-of-type(n+2) { margin-top 0.3em; } .youtube + .nicovideo, .youtube + .soundcloud, .nicovideo + .soundcloud { margin-top 0.75em; } .media_section { display flex; align-items center; text-align center; } .media_section before, .media_section after { display block; flex-grow 1; content ; height 1px; } .media_section before { margin-right 0.5em; background linear-gradient(-90deg, #888, transparent); } .media_section after { margin-left 0.5em; background linear-gradient(90deg, #888, transparent); } .media_notice { color firebrick; font-size 77.5%; } /** Around track styling **/ .next-track { float right; } /** Infomation styling **/ #trackinfo .info_header th { padding .3em .5em; background-color #D8D8D8; font-size 95%; } #trackinfo .infomation_show_btn_wrapper { float right; font-size 12px; user-select none; } #trackinfo .infomation_show_btn { cursor pointer; } #trackinfo .info_content td { padding 0 0 0 5px; height 0; transition .3s; } #trackinfo .info_content ul { padding 0; margin 0; max-height 0; list-style initial; transition .3s; } #trackinfo .info_content li { opacity 0; visibility hidden; margin 0 0 0 1.5em; transition .3s, opacity .2s; } #trackinfo .info_content.infomation_show td { padding 5px; height 100%; } #trackinfo .info_content.infomation_show ul { padding 5px 0; max-height 50em; } #trackinfo .info_content.infomation_show li { opacity 1; visibility visible; } #trackinfo .info_content.infomation_show li nth-of-type(n+2) { margin-top 10px; } /** Lyrics styling **/ #lyrics { font-size 1.06em; line-height 1.6em; } .not_in_card, .inaudible { display inline; position relative; } .not_in_card { border-bottom dashed 1px #D0D0D0; } .tooltip { display flex; visibility hidden; position absolute; top -42.5px; left 0; width 275px; min-height 20px; max-height 100px; padding 10px; border-radius 5px; background-color #555; align-items center; color #FFF; font-size 85%; line-height 20px; text-align center; white-space nowrap; opacity 0; transition 0.7s; -webkit-user-select none; -moz-user-select none; -ms-user-select none; user-select none; } .inaudible .tooltip { top -68.5px; } span hover + .tooltip { visibility visible; top -47.5px; opacity 0.8; transition 0.3s; } .inaudible span hover + .tooltip { top -73.5px; } .not_in_card span.hide { top -42.5px; opacity 0; transition 0.7s; } .inaudible .img { display inline-block; width 3.45em; height 1.25em; margin-right 4px; margin-bottom -3.5px; margin-left 4px; background-image url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2971/7/Inaudible.png); background-size contain; background-repeat no-repeat; } .not_in_card after, .inaudible .img after { content ; visibility hidden; position absolute; top -8.5px; left 42.5%; border-width 5px; border-style solid; border-color #555 transparent transparent transparent; opacity 0; transition 0.7s; } .not_in_card hover after, .inaudible .img hover after { content ; visibility visible; top -13.5px; left 42.5%; opacity 0.8; transition 0.3s; } .not_in_card after { top -2.5px; left 50%; } .not_in_card hover after { top -7.5px; left 50%; } .not_in_card.hide after { visibility hidden; top -2.5px; opacity 0; transition 0.7s; } /** For mobile device styling **/ .uk-overflow-container { display inline; } #trackinfo.mobile { display table; float none; width 100%; margin auto; margin-bottom 1em; } #trackinfo.mobile th { text-transform none; } #trackinfo.mobile tbody tr not(.media) th { text-align left; background-color unset; } #trackinfo.mobile td { white-space normal; } document.addEventListener( DOMContentLoaded , function() { use strict ; const headers = { title アルバム別曲名 , album アルバム , circle サークル , vocal Vocal , lyric Lyric , chorus Chorus , narrator Narration , rap Rap , voice Voice , whistle Whistle (口笛) , translate Translation (翻訳) , arrange Arrange , artist Artist , bass Bass , cajon Cajon (カホン) , drum Drum , guitar Guitar , keyboard Keyboard , mc MC , mix Mix , piano Piano , sax Sax , strings Strings , synthesizer Synthesizer , trumpet Trumpet , violin Violin , original 原曲 , image_song イメージ曲 }; const rPagename = /(?=^|.*
https://w.atwiki.jp/vocaloidenglishlyric/pages/647.html
【Tags Miku keeno tB B】 Original Music title bitter Romaji music title bitter Music Lyrics written, Voice edited by :keeno Music arranged by :keeno Singer(s) 初音ミク (Hatsune Miku) Append Dark Click here for the original Japanese Lyrics English Lyrics (translated by Swifty): A light flickering in my world is Surely the scar of the love once I had in my youth Only your voice came to mind and burst I can never take back the entangled day by now Though I pretend to be tough and smile, it runs over from my heart and it won't stop I'm always like this, repeating that Among the shining street lights, see the memory and your shadow got dim Though I want you to smile a little more I thought I could already walk through the space of the town glowed orange alone I'm still staying here. I can hear your voice That just makes me impossible to move, hey In the world where is too large to be alone I was holding my knees and crying Please, someone, save me out Before the night ends Find me Now the street lights went out and the sky grew brighter Why won't my tears stop? Though I just want you to be my side just for a while That won't be answered Among the shining street lights, see the memory and your shadow got dim Though I want you to smile a little more Romaji lyrics (transliterated by Swifty): hitori de ikiteikutsumoridatta mirai ni doushite kimi wa mada tonari ni itekureru no deshou masshirona shatsu ni shimikonda makkurona shimi mitaini nokoru ushirometai uso ya yaruse nai kanjou ni fureyoutoshite mata namida ga deta nee koko ni atta hikari wa kieta "shikata ga nai yo nante" furi de utsuro ni natta hibi no sukima ni miushinatta jibun no katachi hitori de ikiteiku kakugo wo kimeta noni doushite kimi no koe ga kou mo kiki taku naru no deshou makkurana heya ni sashikonda gaitou no akari mitaini yureru minikui kokoro wo okubyouna shinzou wo "kimi no tame" nante ka-ten de kakushite tsukame nai mirai ni se wo mukete kore de ii da nante kidottemiru kedo hitori de ikiteiku hazu datta mirai ni doushite kimi wa mada tonari ni itekureru no deshou nee kimi ga son'na fuu ni warau tabi ni don'na nayami mo doudemo yokunatteiku hitori ja ikite ike nai nante koto wa nai keredo koushite kimi to tsunaida te wo hanashi taku nai no desu
https://w.atwiki.jp/touhoukashi/pages/5218.html
【登録タグ L STARSHIP SOUNDS + すばる ちょこふぁん 小さな小さな賢将 曲】 【注意】 現在、このページはJavaScriptの利用が一時制限されています。この表示状態ではトラック情報が正しく表示されません。 この問題は、以下のいずれかが原因となっています。 ページがAMP表示となっている ウィキ内検索からページを表示している これを解決するには、こちらをクリックし、ページを通常表示にしてください。 /** General styling **/ @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight 350; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/10/NotoSansCJKjp-DemiLight.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/9/NotoSansCJKjp-DemiLight.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/8/NotoSansCJKjp-DemiLight.ttf) format( truetype ); } @font-face { font-family Noto Sans JP ; font-display swap; font-style normal; font-weight bold; src url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/13/NotoSansCJKjp-Medium.woff2) format( woff2 ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/12/NotoSansCJKjp-Medium.woff) format( woff ), url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2972/11/NotoSansCJKjp-Medium.ttf) format( truetype ); } rt { font-family Arial, Verdana, Helvetica, sans-serif; } /** Main table styling **/ #trackinfo, #lyrics { font-family Noto Sans JP , sans-serif; font-weight 350; } .track_number { font-family Rockwell; font-weight bold; } .track_number after { content . ; } #track_args, .amp_text { display none; } #trackinfo { position relative; float right; margin 0 0 1em 1em; padding 0.3em; width 320px; border-collapse separate; border-radius 5px; border-spacing 0; background-color #F9F9F9; font-size 90%; line-height 1.4em; } #trackinfo th { white-space nowrap; } #trackinfo th, #trackinfo td { border none !important; } #trackinfo thead th { background-color #D8D8D8; box-shadow 0 -3px #F9F9F9 inset; padding 4px 2.5em 7px; white-space normal; font-size 120%; text-align center; } .trackrow { background-color #F0F0F0; box-shadow 0 2px #F9F9F9 inset, 0 -2px #F9F9F9 inset; } #trackinfo td ul { margin 0; padding 0; list-style none; } #trackinfo li { line-height 16px; } #trackinfo li nth-of-type(n+2) { margin-top 6px; } #trackinfo dl { margin 0; } #trackinfo dt { font-size small; font-weight bold; } #trackinfo dd { margin-left 1.2em; } #trackinfo dd + dt { margin-top .5em; } #trackinfo_help { position absolute; top 3px; right 8px; font-size 80%; } /** Media styling **/ #trackinfo .media th { background-color #D8D8D8; padding 4px 0; font-size 95%; text-align center; } .media td { padding 0 2px; } .media iframe nth-of-type(n+2) { margin-top 0.3em; } .youtube + .nicovideo, .youtube + .soundcloud, .nicovideo + .soundcloud { margin-top 0.75em; } .media_section { display flex; align-items center; text-align center; } .media_section before, .media_section after { display block; flex-grow 1; content ; height 1px; } .media_section before { margin-right 0.5em; background linear-gradient(-90deg, #888, transparent); } .media_section after { margin-left 0.5em; background linear-gradient(90deg, #888, transparent); } .media_notice { color firebrick; font-size 77.5%; } /** Around track styling **/ .next-track { float right; } /** Infomation styling **/ #trackinfo .info_header th { padding .3em .5em; background-color #D8D8D8; font-size 95%; } #trackinfo .infomation_show_btn_wrapper { float right; font-size 12px; user-select none; } #trackinfo .infomation_show_btn { cursor pointer; } #trackinfo .info_content td { padding 0 0 0 5px; height 0; transition .3s; } #trackinfo .info_content ul { padding 0; margin 0; max-height 0; list-style initial; transition .3s; } #trackinfo .info_content li { opacity 0; visibility hidden; margin 0 0 0 1.5em; transition .3s, opacity .2s; } #trackinfo .info_content.infomation_show td { padding 5px; height 100%; } #trackinfo .info_content.infomation_show ul { padding 5px 0; max-height 50em; } #trackinfo .info_content.infomation_show li { opacity 1; visibility visible; } #trackinfo .info_content.infomation_show li nth-of-type(n+2) { margin-top 10px; } /** Lyrics styling **/ #lyrics { font-size 1.06em; line-height 1.6em; } .not_in_card, .inaudible { display inline; position relative; } .not_in_card { border-bottom dashed 1px #D0D0D0; } .tooltip { display flex; visibility hidden; position absolute; top -42.5px; left 0; width 275px; min-height 20px; max-height 100px; padding 10px; border-radius 5px; background-color #555; align-items center; color #FFF; font-size 85%; line-height 20px; text-align center; white-space nowrap; opacity 0; transition 0.7s; -webkit-user-select none; -moz-user-select none; -ms-user-select none; user-select none; } .inaudible .tooltip { top -68.5px; } span hover + .tooltip { visibility visible; top -47.5px; opacity 0.8; transition 0.3s; } .inaudible span hover + .tooltip { top -73.5px; } .not_in_card span.hide { top -42.5px; opacity 0; transition 0.7s; } .inaudible .img { display inline-block; width 3.45em; height 1.25em; margin-right 4px; margin-bottom -3.5px; margin-left 4px; background-image url(https //img.atwikiimg.com/www31.atwiki.jp/touhoukashi/attach/2971/7/Inaudible.png); background-size contain; background-repeat no-repeat; } .not_in_card after, .inaudible .img after { content ; visibility hidden; position absolute; top -8.5px; left 42.5%; border-width 5px; border-style solid; border-color #555 transparent transparent transparent; opacity 0; transition 0.7s; } .not_in_card hover after, .inaudible .img hover after { content ; visibility visible; top -13.5px; left 42.5%; opacity 0.8; transition 0.3s; } .not_in_card after { top -2.5px; left 50%; } .not_in_card hover after { top -7.5px; left 50%; } .not_in_card.hide after { visibility hidden; top -2.5px; opacity 0; transition 0.7s; } /** For mobile device styling **/ .uk-overflow-container { display inline; } #trackinfo.mobile { display table; float none; width 100%; margin auto; margin-bottom 1em; } #trackinfo.mobile th { text-transform none; } #trackinfo.mobile tbody tr not(.media) th { text-align left; background-color unset; } #trackinfo.mobile td { white-space normal; } document.addEventListener( DOMContentLoaded , function() { use strict ; const headers = { title アルバム別曲名 , album アルバム , circle サークル , vocal Vocal , lyric Lyric , chorus Chorus , narrator Narration , rap Rap , voice Voice , whistle Whistle (口笛) , translate Translation (翻訳) , arrange Arrange , artist Artist , bass Bass , cajon Cajon (カホン) , drum Drum , guitar Guitar , keyboard Keyboard , mc MC , mix Mix , piano Piano , sax Sax , strings Strings , synthesizer Synthesizer , trumpet Trumpet , violin Violin , original 原曲 , image_song イメージ曲 }; const rPagename = /(?=^|.*
https://w.atwiki.jp/eriax/pages/117.html
制限 DOM-HTML 限定。名前空間を認識しない。大文字・小文字の区別はテキトー。長さは px しか認識しない。 構文エラーからの回復はしない(構文エラー回復を含めた CSS パーサは別所を参照)。 1000 行以内を目指したが現状 1050 行。パックして 20kb ぐらい。 マッチング主体なので、ノードをかき集める速度は期待できない。 使用例 セレクタテスト var sapi = CSS_Selectors_and_MediaQueries_for_HTML_Browsers._selectors_group; // セレクタテストの生成。 var selector = sapi( body lang(ja) p#HOGE nth-child(2n+1) ); // テストしたい要素。 var target = document.getElementById( HOGE ); // テストを実行。this として all 配列を渡すと scope にマッチする。 var result = selector.call({ all [document.body] }, target); 戻り値は [[p, null], [body, null]] のように単純セレクタにマッチした要素の配列(または null)。セレクタとは逆順に入っており、0 番がセレクタ全体にマッチした要素。この例で null になっている部分は疑似要素を表すレンジ。例えば p before なら、p の最初の子の直前に位置するレンジになる。 セレクタを使って要素をかき集める簡便メソッド var applySelectors = CSS_Selectors_and_MediaQueries_for_HTML_Browsers.applySelectors; // body 以下で非表示の要素をかき集める。戻り値は配列。 var result = applySelectors( *[aria-hidden= true ] , document.body); メディアクエリテスト var mql = CSS_Selectors_and_MediaQueries_for_HTML_Browsers._media_query_list; // メディアクエリテストの生成。 var mediump = mql( only screen and (min-width 800px), screen and (min-color 16) ); // window をメディアグループ visual としてクエリテスト。戻り値は真偽値。 if (mediump.call({ ondefault function (e) { return true; } }, window, visual )) alert( OK ); this 値として ondefault ハンドラを渡すと、未知の特徴を処理できる。 メディアグループ interactive としてテストする簡便メソッド var matchesWindow = CSS_Selectors_and_MediaQueries_for_HTML_Browsers.matchesWindow; if (matchesWindow( (orientation portrait) , window)) alert( OK ); ソースコード var CSS_Selectors_and_MediaQueries_for_HTML_Browsers = new function () { /*@cc_on@*/ var h = [0-9a-f] ; var nonascii = [^\\u0000-\\u007F] ; var unicode = \\\\ + h + {1,6}(? \\r\\n|[\x20\\n\\r\\t\\f])? ; var num = (? [0-9]+|[0-9]*\\.[0-9]+) ; var nl = (? \\n|\\r\\n|\\r|\\f) ; var w = [\x20\\t\\r\\n\\f]* ; var s = [\x20\\t\\r\\n\\f]+ ; var comment = \\/\\*[^\*]*\\*+(? [^\/\*][^\*]*\\*+)*\\/ ; var escape = unicode + |\\\\[^\\n\\r\\f0-9A-Fa-f] ; var nmchar = (? [_0-9a-z-]| + nonascii + | + escape + ) ; var name = nmchar + + ; var nmstart = (? [_a-z]| + nonascii + | + escape + ) ; var ident = -? + nmstart + nmchar + * ; var string1 = \ (? [^\\n\\r\\f\\\\\ ]|\\\\ + nl + | + nonascii + | + escape + )*\ ; var string2 = \ (? [^\\n\\r\\f\\\\\ ]|\\\\ + nl + | + nonascii + | + escape + )*\ ; var string = (? + string1 + | + string2 + ) ; var invalid1 = \ (? [^\\n\\r\\f\\\\\ ]|\\\\ + nl + | + nonascii + | + escape + )* ; var invalid2 = \ (? [^\\n\\r\\f\\\\\ ]|\\\\ + nl + | + nonascii + | + escape + )* ; var invalid = (? + invalid1 + | + invalid2 + ) ; var url = (? [!#$% *-~]| + nonascii + | + escape + )* ; // var A = (? a|\\\\0{0,4}[46]1(? \\r\\n|[ \\t\\r\\n\\f])?) ; var D = (? d|\\\\0{0,4}[46]4(? \\r\\n|[ \\t\\r\\n\\f])?) ; var E = (? e|\\\\0{0,4}[46]5(? \\r\\n|[ \\t\\r\\n\\f])?) ; var L = (? l|\\\\0{0,4}[46]c(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\l) ; var N = (? n|\\\\0{0,4}[46]e(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\n) ; var O = (? o|\\\\0{0,4}[46]f(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\o) ; var P = (? p|\\\\0{0,4}[57]0(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\p) ; var R = (? r|\\\\0{0,4}[57]2(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\r) ; var T = (? t|\\\\0{0,4}[57]4(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\t) ; var U = (? u|\\\\0{0,4}[57]5(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\u) ; var V = (? v|\\\\0{0,4}[57]6(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\v) ; var X = (? x|\\\\0{0,4}[57]8(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\x) ; var Y = (? y|\\\\0{0,4}[57]9(? \\r\\n|[ \\t\\r\\n\\f])?|\\\\y) ; // var S0 = w; var S1 = s; var INCLUDES = ~= ; var DASHMATCH = \\|= ; var PREFIXMATCH = \\^= ; var SUFFIXMATCH = \\$= ; var SUBSTRINGMATCH = \\*= ; var PLUS = w + \\+ ; var GREATER = w + ; var COMMA = w + , ; var TILDE = w + ~(?!=) ; var NOT = not\\( ; var STRING = string; var IDENT = ident; var HASH = # + name; var DIMENSION = num + ident; var PERCENTAGE = num + % ; var NUMBER = num; var URI = U + R + L + \\( + w + string + w + \\)| + U + R + L + \\( + w + url + w + \\) ; var FUNCTION = ident + \\( ; var s_unary_operator = PLUS + |- ; var s_hexcolor = HASH + S0; // var p_Sh = new RegExp( ^ + S1); var p_St = new RegExp(S1 + $ ); var f_trim = function (stringData) { return stringData.replace(p_Sh, ).replace(p_St, ); }; var p_escaped = /\\([0-9a-f]{1,6})(? \r\n|[\x20\n\r\t\f])?|\\([^\n\r\f0-9a-f])/gi; var f_unescape_replace = function (str, x, c) { if (x) { return String.fromCharCode(parseInt(x, 16)); // not accurate } return c; }; var f_unescape = function (stringData) { return stringData.replace(p_escaped, f_unescape_replace); }; // // css3-selectors var p_selector_type = new RegExp( ^(? ( + IDENT + (?=\\|)|\\*(?=\\|))?\\|)?( + IDENT + |\\*) , i ); var p_selector_subject = new RegExp; p_selector_subject.exec = function (stringData) { var src = stringData; var cmp; if ((cmp = p_selector_type.exec(src))) { // subject var res1 = []; var res2 = []; var code; var ns = cmp[1]; var ln = cmp[2]; if (!ns || ns === * ) { if (ln === * ) { code = return\x20n; ; } else { code = f_unescape(ln).replace(/\W/g, \\$ ); code = return\x20/^ + code + $/i.test(n.nodeName)?n null; ; } res2[res2.length] = code; cmp = cmp[0]; res1[res1.length] = cmp; } else { throw new Error( Namespace is not supported ); } return [].concat(res1.join( ), res2); } return null; }; // var p_selector_ID = new RegExp( ^#( + name + ) , i ); var p_selector_class = new RegExp( ^\\.( + IDENT + ) , i ); var p_selector_attrib = new RegExp( \\[ + S0 + (( + IDENT + (?=\\|)|\\*(?=\\|))?\\|)?( + IDENT + ) + S0 + (? ( + PREFIXMATCH + | + SUFFIXMATCH + | + SUBSTRINGMATCH + | + INCLUDES + | + DASHMATCH + |=) + S0 + (? ( + STRING + )|( + IDENT + )) + S0 + )? + \\] , i ); var p_selector_negation_begin = new RegExp( ^ + NOT, i ); var p_selector_negation_end = new RegExp( ^ + S0 + \\) ); var p_selector_pseudo_class = new RegExp( ^( ?)(? ( + FUNCTION + ) + S0 + ( + (? (? + DIMENSION + | + STRING + | + IDENT + | + NUMBER + | + PLUS + |-) + S0 + )+ + ) + \\) + |( + IDENT + )) , i ); var p_selector_predicate_common = new RegExp; p_selector_predicate_common.exec = function (stringData) { var src = stringData; var cmp; var res1 = []; var res2 = []; var code; switch (src.charAt(0)) { case # if ((cmp = p_selector_ID.exec(src))) { code = f_unescape(cmp[1]).replace(/[\ \\]/g, \\$ ); code = return\x20(n.id=== + code + )?n null; ; break; } return null; case . if ((cmp = p_selector_class.exec(src))) { code = f_unescape(cmp[1]).replace(/\W/g, \\$ ); code = return\x20/(? ^| + S1 + ) + code + (? + S0 + |$)/.test(n.className)?n null; ; break; } return null; case [ if ((cmp = p_selector_attrib.exec(src))) { var ns = cmp[2]; if (ns ns !== * ) { throw new Error( Namespace is not supported ); } var ln = f_unescape(cmp[3]).replace(/[\ \\]/g, \\$ ); var opr = cmp[4]; var val; code = var\x20a=n.getAttributeNode( + ln + ); ; if (opr) { val = ((val = cmp[5])) ? val.slice(1, -1) cmp[6]; val = f_unescape(val).replace(/\W/g, \\$ ); } switch (opr) { case = val = /^ + val + $/.test(a.value) ; break; case ^= val = /^ + val + /.test(a.value) ; break; case $= val = / + val + $/.test(a.value) ; break; case *= val = / + val + /.test(a.value) ; break; case ~= val = /(? ^| + S1 + ) + val + (? + S1 + |$)/.test(a.value) ; break; case |= val = /^ + val + (?=-|$)/.test(a.value) ; break; default val = a.specified ; break; } code += return\x20(a + val + )?n null; ; break; } return null; case if ((cmp = p_selector_pseudo_class.exec(src))) { var type = cmp[1]; var name; var args, a, b; if ((name = cmp[2])) { name = name.slice(0, -1); args = cmp[3]; } else { name = cmp[4]; args = ; } switch (type + name) { case root code = return\x20(n===n.ownerDocument.documentElement)?n null; ; break; case nth-child args = f_parse_nth(args), a = args[0], b = args[1]; code = var\x20m,i;for(m=n,i=1;m=m.previousSibling;)if(m.nodeType===1)i++; ; code += (a === 0) ? return\x20(i=== + b + )?n null; var\x20j=i- + b + ;return((j% + a + ===0) (j / + a + =0))?n null; ; break; case nth-last-child args = f_parse_nth(args), a = args[0], b = args[1]; code = var\x20m,i;for(m=n,i=1;m=m.nextSibling;)if(m.nodeType===1)i++; ; code += (a === 0) ? return\x20(i=== + b + )?n null; var\x20j=i- + b + ;return((j% + a + ===0) (j / + a + =0))?n null; ; break; case nth-of-type args = f_parse_nth(args), a = args[0], b = args[1]; code = var\x20s=n.tagName,m,i;for(m=n,i=1;m=m.previousSibling;)if(m.nodeType===1 m.tagName===s)i++; ; code += (a === 0) ? return\x20(i=== + b + )?n null; var\x20j=i- + b + ;return((j% + a + ===0) (j/ + a + =0))?n null; ; break; case nth-last-of-type args = f_parse_nth(args), a = args[0], b = args[1]; code = var\x20s=n.tagName,m,i;for(m=n,i=1;m=m.nextSibling;)if(m.nodeType===1 m.tagName===s)i++; ; code += (a === 0) ? return\x20(i=== + b + )?n null; var\x20j=i- + b + ;return((j% + a + ===0) (j/ + a + =0))?n null; ; break; case first-child code = var\x20m;for(m=n;m=m.previousSibling;)if(m.nodeType===1)return\x20null;return\x20n; ; break; case last-child code = var\x20m;for(m=n;m=m.nextSibling;)if(m.nodeType===1)return\x20null;return\x20n; ; break; case first-of-type code = var\x20s=n.tagName,m;for(m=n;m=m.previousSibling;)if(m.nodeType===1 m.tagName===s)return\x20null;return\x20n; ; break; case last-of-type code = var\x20s=n.tagName,m;for(m=n;m=m.nextSibling;)if(m.nodeType===1 m.tagName===s)return\x20null;return\x20n; ; break; case only-child code = var\x20m;for(m=n;m=m.previousSibling;)if(m.nodeType===1)return\x20null;for(m=n;m=m.nextSibling;)if(m.nodeType===1)return\x20null;return\x20n; ; break; case only-of-type code = var\x20s=n.tagName,m;for(m=n;m=m.previousSibling;)if(m.nodeType===1 m.tagName===s)return\x20null;for(m=n;m=m.nextSibling;)if(m.nodeType===1 m.tagName===s)return\x20null;return\x20n; ; break; case empty code = var\x20m;for(m=n.firstChild;m;m=m.nextSibling)switch(m.nodeType){case\x201 return\x20null;case\x203 case\x204 if(m.length 0)return\x20null;default continue;}return\x20n; ; break; case link case visited case active case hover throw new Error(name + is not supported ); case focus code = var\x20d;return((d=n.ownerDocument) (n===d.activeElement))?n null; ; break; case target code = var\x20d,s,w;return((d=n.ownerDocument) (w=d.defaultView) (s=w.location.hash) (s=s.slice(1)) (n.id===s))?n null; ; break; case lang args = f_trim(args).replace(/\W/g, \\$ ); code = for(var\x20m=n,v;m;m=m.parentNode)if(m.nodeType===1)if((v=m.lang))return\x20/^ + args + (? -|$)/i.test(v)?n null;return\x20null; ; break; case enabled code = return\x20(n.disabled===false)?n null; ; break; case disabled code = return\x20(n.disabled===true)?n null; ; break; case checked code = return\x20(n.checked===true)?n null; ; break; case scope code = var\x20c=this.all;if(!c)return\x20null;var\x20I=c.length,i;for(i=0;i I;i++)if(n===c[i])return\x20n;return\x20null; ; break; case first-line case first-line throw new Error(name + is not supported ); case first-letter case first-letter code = var\x20d,r;if((d=n.ownerDocument)){r=d.createRange();while(n.hasChildNodes())n=n.firstChild;if(n.nodeType===3)if(n.length 0){r.setStart(n,0);r.setEnd(n,1);return\x20r;}}return\x20null; ; break; case selection case selection code = var\x20d,w,s;if((d=n.ownerDocument) (w=d.defaultView))return\x20w.getSelection().getRangeAt(0);return\x20null ; break; case before case before code = var\x20d,r;if((d=n.ownerDocument)){r=d.createRange();r.setStart(n,0);return\x20r;}return\x20null; ; break; case after case after code = var\x20d,r;if((d=n.ownerDocument)){r=d.createRange();switch(n.nodeType){case\x203 case\x204 case\x207 case\x208 r.setStart(n,n.data.length);break;default r.setStart(n,n.childNodes.length);break;}return\x20r;}return\x20null; ; break; default throw new Error(name + is not supported ); } break; } return null; default return null; } res2[res2.length] = code; cmp = cmp[0]; res1[res1.length] = cmp; return [].concat(res1.join( ), res2); }; // var p_selector_negation_arg = new RegExp; p_selector_negation_arg.exec = function (stringData) { var src = stringData; var cmp; var res1 = []; var res2 = []; var code; switch (src.charAt(0)) { case # case . case [ case if ((cmp = p_selector_predicate_common.exec(src))) { code = cmp.slice(1); break; } return null; default if ((cmp = p_selector_subject.exec(src))) { code = cmp.slice(1); break; } return null; } res2[res2.length] = return\x20!(function(n){ + code.join( ) + })(n)?n null; ; cmp = cmp[0]; res1[res1.length] = cmp; return [].concat(res1.join( ), res2); }; // var p_simple_selector_sequence = new RegExp; p_simple_selector_sequence.exec = function (stringData) { var src = stringData; var cmp; var res1 = []; var res2 = []; var code; var subj = false; if ((cmp = p_selector_subject.exec(src))) { // subject subj = true; res2 = res2.concat(cmp.slice(1)); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); } A while (src.length 0) { // predicates switch (src.charAt(0)) { case # case . case [ if ((cmp = p_selector_predicate_common.exec(src))) { code = cmp.slice(1); break; } return null; case if ((cmp = p_selector_negation_begin.exec(src))) { cmp = cmp[0]; var zrc = src.slice(cmp.length); var kmp; var rez1 = [cmp]; var rez2 = []; if ((kmp = p_selector_negation_arg.exec(zrc))) { rez2 = rez2.concat(kmp.slice(1)); kmp = kmp[0]; rez1[rez1.length] = kmp; zrc = zrc.slice(kmp.length); if ((kmp = p_selector_negation_end.exec(zrc))) { kmp = kmp[0]; rez1[rez1.length] = kmp; zrc = zrc.slice(kmp.length); // src = zrc; res1.push.apply(res1, rez1); res2.push.apply(res2, rez2); continue; } } break A; } if ((cmp = p_selector_predicate_common.exec(src))) { code = cmp.slice(1); break; } break A; default break A; } res2 = res2.concat(code); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); } if (res1.length 0) { if (!subj) { cmp = p_selector_subject.exec( * ); res2 = [].concat(cmp.slice(1), res2); } return [].concat(res1.join( ), res2); } return null; }; // var p_combinator = new RegExp( ^(? ( + PLUS + ) + S0 + |( + GREATER + ) + S0 + |( + TILDE + ) + S0 + |( + S1 + )) , i ); var o_combinator_table = { function (node, patterns) { A if (node.nodeType === 1) { var count = patterns.length; var i, n; for (i = 0; i count; i++) { n = patterns[i].call(this, node); if (!n) { break A; } } return [node, (node !== n) ? n null]; } return null; }, \x20 function (node, patterns) { var count = patterns.length; var i, n; A while ((node = node.parentNode)) { if (node.nodeType === 1) { for (i = 0; i count; i++) { n = patterns[i].call(this, node); if (!n) { continue A; } } return [node, (node !== n) ? n null]; } } return null; }, function (node, patterns) { var count = patterns.length; var i, n; A if ((node = node.parentNode)) { if (node.nodeType === 1) { for (i = 0; i count; i++) { n = patterns[i].call(this, node); if (!n) { break A; } } return [node, (node !== n) ? n null]; } } return null; }, ~ function (node, patterns) { var count = patterns.length; var i, n; A while ((node = node.previousSibling)) { if (node.nodeType === 1) { for (i = 0; i count; i++) { n = patterns[i].call(this, node); if (!n) { continue A; } } return [node, (node !== n) ? n null]; } } return null; }, + function (node, patterns) { var count = patterns.length; var i, n; A while ((node = node.previousSibling)) { if (node.nodeType === 1) { for (i = 0; i count; i++) { n = patterns[i].call(this, node); if (!n) { break A; } } return [node, (node !== n) ? n null]; } } return null; } }; // var p_selector = new RegExp; p_selector.exec = function (stringData) { var src = stringData; var cmp; if ((cmp = p_simple_selector_sequence.exec(src))) { var res1 = []; var res2 = []; var sel; var cmb; sel = cmp.slice(1); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); while ((cmp = p_combinator.exec(src))) { cmb = cmp[1] ? + cmp[2] ? cmp[3] ? ~ \x20 ; res2[res2.length] = [sel, cmb]; sel = null; cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_simple_selector_sequence.exec(src))) { sel = cmp.slice(1); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); continue; } break; } if (sel) { res2[res2.length] = [sel, ]; } else { var lst = res2[res2.length - 1]; var lsn = lst.length - 1; if (lst[lsn] === \x20 ) { lst[lsn] = ; } else { return null; } } for (var simple, patterns, i = 0, I = res2.length; i I; i++) { simple = res2[i], patterns = simple[0]; res2[i] = { patterns patterns, relation o_combinator_table[simple[1]] }; for (var j = 0, J = patterns.length; j J; j++) { patterns[j] = new Function( n , patterns[j]); } } res2.reverse(); return [].concat(res1.join( ), res2); } return null; }; // var p_selector_separator = new RegExp( ^ + COMMA + w); var p_selectors_group = new RegExp; p_selectors_group.exec = function (stringData) { var src = stringData; var cmp; if ((cmp = p_selector.exec(src))) { var res1 = []; var res2 = []; res2[res2.length] = cmp.slice(1); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); while ((cmp = p_selector_separator.exec(src))) { cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_selector.exec(src))) { res2[res2.length] = cmp.slice(1); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); continue; } break; } return [].concat(res1.join( ), res2); } return null; }; // var s_integer = [0-9]+ ; var p_nth = new RegExp(w + (? ([-+]?(? + s_integer + )?) + N + (? + w + ([-+]) + w + ( + s_integer + ))?|([-+]?(? + s_integer + ))|( + O + D + D + )|( + E + V + E + N + )) + w, i ); var f_parse_nth = function (stringData) { var cmp = p_nth.exec(stringData); if (cmp) { var i, a, b; for (i = 0; !cmp[++i];); switch (i) { case 1 // 2n+1 a = cmp[i]; b = cmp[i + 1] + cmp[i + 2]; return [a === + ? 1 a === - ? -1 parseInt(a, 10), parseInt(b, 10) || 0]; case 4 // 1 return [0, parseInt(cmp[i], 10) || 0]; case 5 // odd return [2, 1]; case 6 // even return [2, 0]; } } return null; }; // var o_selectors_group_cache = { }; var f_create_selectors_group = function (stringData) { var selectors = p_selectors_group.exec(stringData); if (!selectors || stringData.length !== selectors[0].length) { throw new Error( malformed CSS selectors ); } var fn = o_selectors_group_cache[stringData]; if ( function === typeof fn) { return fn; } return o_selectors_group_cache[stringData] = function (node) { var selectorCount = selectors.length; var i; A for (i = 1; i selectorCount; i++) { var n = node; var result = []; var simples = selectors[i]; var simpleCount = simples.length; var j; for (j = 0; j simpleCount; j++) { var simple = simples[j]; var patterns = simple.patterns; var relation = simple.relation; if ((n = relation.call(this, n, patterns))) { result[result.length] = n; n = n[0]; continue; } continue A; } return result; } return null; }; }; this._selectors_group = f_create_selectors_group; // // css3-values var p_exprs = new RegExp( ^(? + ( + FUNCTION + ) + |(\\)) + |( + (? + s_unary_operator + )? + (? + PERCENTAGE + | + DIMENSION + | + NUMBER + ) + | + URI + | + STRING + | + IDENT + (?!\\() + | + s_hexcolor + )|( + COMMA + S0 + | + S0 + / + S0 + | + S1 + ) + ) , i ); var p_expr = new RegExp; p_expr.exec = function (stringData) { var src = stringData; var cmp; var tmp; var res1 = []; var res2 = []; var depth = 0; for (; cmp = p_exprs.exec(src); src = src.slice(tmp.length)) { if ((tmp = cmp[1])) { // f( depth++, res1[res1.length] = tmp; res2[res2.length] = f_unescape(tmp); continue; } if ((tmp = cmp[2])) { // ) if (depth 0) { depth--, res1[res1.length] = tmp; res2[res2.length] = tmp; continue; } break; } if ((tmp = cmp[3])) { res1[res1.length] = tmp; res2[res2.length] = f_unescape(tmp); continue; } if ((tmp = cmp[4])) { // operator res1[res1.length] = tmp; res2[res2.length] = f_trim(tmp) || \x20 ; continue; } } if (depth === 0) { if (res2[res2.length - 1] === \x20 ) { res2.pop(); } return [].concat(res1.join( ), res2); } return null; }; // // css3-mediaqueries var p_media_expression_prefix = new RegExp( ^\\( + S0 + ( + IDENT + ) + S0, i ); var p_media_expression_infix = new RegExp( ^ + S0); var p_media_expression_suffix = new RegExp( ^\\) + S0); var p_val_px = new RegExp( ^ + w + ( + NUMBER + ) + P + X + w + $ , i ); var p_val_ratio = new RegExp( ^ + w + ( + NUMBER + ) + w + / + w + ( + NUMBER + ) + w + $ , i ); var p_val_num = new RegExp( ^ + S0 + ( + NUMBER + ) + S0 + $ , i ); var p_val_pattern = new RegExp( ^ + S0 + ( + STRING + ) + S0 + , + S0 + ( + STRING + ) + S0 + $ ); var c_media_width = w.innerWidth ; var c_media_height = w.innerHeight ; var c_media_width_div_height = w.innerWidth/w.innerHeight ; var c_media_device_width = w.screen.availWidth ; var c_media_device_height = w.screen.availHeight ; var c_media_device_width_div_device_height = w.screen.availWidth/w.screen.availHeight ; var c_media_color = w.screen.colorDepth ; var p_media_expression = new RegExp; p_media_expression.exec = function (stringData) { var src = stringData; var cmp; if ((cmp = p_media_expression_prefix.exec(src))) { var res1 = []; var res2 = []; res2 = res2.concat(cmp.slice(1)); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_media_expression_infix.exec(src))) { cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_expr.exec(src))) { res2 = res2.concat(cmp.slice(1)); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); } } if ((cmp = p_media_expression_suffix.exec(src))) { cmp = cmp[0]; res1[res1.length] = cmp; var feature = res2[0].toLowerCase(); var value = res2.slice(1).join( ); var accessor; var operator; var code; /*@{ c_media_width = (function(d){d=(d.compatMode=== CSS1Compat )?d.documentElement d.body;return\x20d.clientWidth;})(w.document) ; c_media_height = (function(d){d=(d.compatMode=== CSS1Compat )?d.documentElement d.body;return\x20d.clientHeight;})(w.document) ; c_media_width_div_height = (function(d){d=(d.compatMode=== CSS1Compat )?d.documentElement d.body;return\x20d.clientWidth/d.clientHeight;})(w.document) ; }@*/ if (/(? ^|-)(? width|height)$/i.test(feature)) { switch (feature) { case width accessor = c_media_width, operator = === ; break; case height accessor = c_media_height, operator = === ; break; case max-width accessor = c_media_width, operator = = ; break; case min-width accessor = c_media_width, operator = = ; break; case max-height accessor = c_media_height, operator = = ; break; case min-height accessor = c_media_height, operator = = ; break; case device-width accessor = c_media_device_width, operator = === ; break; case device-height accessor = c_media_device_height, operator = === ; break; case max-device-width accessor = c_media_device_width, operator = = ; break; case min-device-width accessor = c_media_device_width, operator = = ; break; case max-device-height accessor = c_media_device_height, operator = = ; break; case min-device-height accessor = c_media_device_height, operator = = ; break; default accessor = false ; } code = return\x20 + accessor; if (value (value = p_val_px.exec(value))) { code += operator + value[1] + ; ; } else if (/^[ ]/.test(operator)) { code += ; ; } else { code += !==0; ; } } else if (/(? ^|-)aspect-ratio$/i.test(feature)) { switch (feature) { case aspect-ratio accessor = c_media_width_div_height, operator = == ; break; case max-aspect-ratio accessor = c_media_width_div_height, operator = = ; break; case min-aspect-ratio accessor = c_media_width_div_height, operator = = ; break; case device-aspect-ratio accessor = c_media_device_width_div_device_height, operator = == ; break; case max-device-aspect-ratio accessor = c_media_device_width_div_device_height, operator = = ; break; case min-device-aspect-ratio accessor = c_media_device_width_div_device_height, operator = = ; break; default accessor = false ; } code = return\x20 + accessor; if (value (value = p_val_ratio.exec(value))) { code += operator + value[1] + ; ; } else if (/^[ ]/.test(operator)) { code += ; ; } else { code += !==0; ; } } else if (/(? ^|-)color$/i.test(feature)) { switch (feature) { case color accessor = c_media_color, operator = === ; break; case max-color accessor = c_media_color, operator = = ; break; case min-color accessor = c_media_color, operator = = ; break; default accessor = false ; } code = return\x20 + accessor; if (value (value = p_val_num.exec(value))) { code += operator + value[1] + ; ; } else if (/^[ ]/.test(operator)) { code += ; ; } else { code += !==0; ; } } else { switch (feature) { case orientation if (value) { value = f_trim(value).toLowerCase(); switch (value) { case portrait code = return\x20 + c_media_width + = + c_media_height + ; ; break; case landscape code = return\x20 + c_media_width + + c_media_height + ; ; break; default code = return\x20false; ; break; } } else { code = return\x20false; ; } break; case -x-domain-pattern value = p_val_pattern.exec(value); if (value) { var psrc = value[1].slice(1, -1).replace(/[\/\\]/g, \\$ ); var flag = value[2].slice(1, -1).replace(/\\/g, \\$ ); code = /\W/.test(flag) ? return\x20false; return\x20/ + psrc + / + flag + .test(w.location); ; } else { code = return\x20false; ; } break; default code = var\x20h=this.ondefault;if(h){return\x20h.call(this,{target w,feature + feature + ,value + value.replace(/[\ \\]/g, \\$ ) + });}return\x20false; ; break; } } res2 = code; return [].concat(res1.join( ), res2); } } return null; }; // var o_media_groups = { continuous /\s*(? ^|,)\s*(? braille|handheld|screen|speech|tty|tv)\s*(? ,|$)\s*/i, paged /\s*(? ^|,)\s*(? handheld|embossed|print|projection|tv)\s*(? ,|$)\s*/i, visual /\s*(? ^|,)\s*(? handheld|print|projection|screen|tty|tv)\s*(? ,|$)\s*/i, audio /\s*(? ^|,)\s*(? handheld|screen|tv)\s*(? ,|$)\s*/i, speechg /\s*(? ^|,)\s*(? handheld|speech)\s*(? ,|$)\s*/i, tactile /\s*(? ^|,)\s*(? braille|embossed)\s*(? ,|$)\s*/i, grid /\s*(? ^|,)\s*(? braille|embossed|handheld|tty)\s*(? ,|$)\s*/i, bitmap /\s*(? ^|,)\s*(? handheld|print|projection|screen|tv)\s*(? ,|$)\s*/i, interactive /\s*(? ^|,)\s*(? braille|handheld|projection|screen|speech|tty|tv)\s*(? ,|$)\s*/i, static /\s*(? ^|,)\s*(? braille|embossed|handheld|print|screen|speech|tty|tv)\s*(? ,|$)\s*/i, // braille /\s*(? ^|,)\s*(? continuous|tactile|grid|interactive|static)\s*(? ,|$)\s*/i, embossed /\s*(? ^|,)\s*(? paged|tactile|grid|static)\s*(? ,|$)\s*/i, handheld /\s*(? ^|,)\s*(? continuous|paged|visual|audio|speech|grid|bitmap|interactive|static)\s*(? ,|$)\s*/i, print /\s*(? ^|,)\s*(? paged|visual|bitmap|static)\s*(? ,|$)\s*/i, projection /\s*(? ^|,)\s*(? paged|visual|bitmap|interactive)\s*(? ,|$)\s*/i, screen /\s*(? ^|,)\s*(? continuous|visual|audio|bitmap|interactive|static)\s*(? ,|$)\s*/i, speech /\s*(? ^|,)\s*(? continuous|speech|interactive|static)\s*(? ,|$)\s*/i, tty /\s*(? ^|,)\s*(? continuous|visual|grid|interactive|static)\s*(? ,|$)\s*/i, tv /\s*(? ^|,)\s*(? continuous|paged|visual|audio|bitmap|interactive|static)\s*(? ,|$)\s*/i }; // var p_media_query_prefix = new RegExp( ^ + S0 + ( + O + N + L + Y + | + N + O + T + )? + S0 + ( + IDENT + ) + S0, i ); var p_media_query_and = new RegExp( ^ + A + N + D + S1, i ); var p_media_query = new RegExp; p_media_query.exec = function (stringData) { var src = stringData; var cmp; var res1 = []; var res2 = []; var code1; var code2; A { if ((cmp = p_media_query_prefix.exec(src))) { // only | not code1 = (code1 = cmp[1]) ? f_unescape(code1).toLowerCase() only ; code2 = f_unescape(cmp[2]).toLowerCase(); break A; } if ((cmp = p_media_expression.exec(src))) { code1 = only ; code2 = all ; res2[res2.length] = new Function( w , cmp.slice(1).join( )); break A; } return null; } cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); // only or not code1 = (code1 === not ) ? return\x20!b; return\x20b; ; // media type if (code2 === all ) { code2 = return\x20true; ; } else { var pattern = o_media_groups[code2]; code2 = if(/(? ^| + S0 + ,) + S0 + (? + code2.replace(/\W/g, \\$ ) + ) + S0 + (? , + S0 + |$)/i.test(m))\x20return\x20true; ; if (pattern) { code2 += return\x20 + pattern + .test(m); ; // be careful not to contain / } else { code2 += return\x20false; ; } } res2 = [].concat(new Function( b , code1), new Function( m , code2), res2); // media queries while ((cmp = p_media_query_and.exec(src))) { cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_media_expression.exec(src))) { res2[res2.length] = new Function( w , cmp.slice(1).join( )); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); continue; } return null; } return [].concat(res1.join( ), res2); }; // var p_media_query_list_prefix = new RegExp( ^ + S0); var p_media_query_list_infix = new RegExp( ^ + COMMA + S0, i ); var p_media_query_list = new RegExp; p_media_query_list.exec = function (stringData) { var src = stringData; var cmp; if ((cmp = p_media_query_list_prefix.exec(src))) { var res1 = []; var res2 = []; cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_media_query.exec(src))) { res2[res2.length] = cmp.slice(1); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); while ((cmp = p_media_query_list_infix.exec(src))) { cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); if ((cmp = p_media_query.exec(src))) { res2[res2.length] = cmp.slice(1); cmp = cmp[0]; res1[res1.length] = cmp; src = src.slice(cmp.length); continue; } break; } } return [].concat(res1.join( ), res2); } return null; }; // var o_media_query_list_cache = { }; var f_create_media_query_list = function (stringData) { var queries = p_media_query_list.exec(stringData); if (!queries) { throw new Error( malformed Media Queries ); } var fn = o_media_query_list_cache[stringData]; if ( function === typeof fn) { return fn; } return o_media_query_list_cache[stringData] = function (view, mediaType) { var queryCount = queries.length; var i; for (i = 1; i queryCount; i++) { var exprs = queries[i]; var exprCount = exprs.length; var j; if (exprs[1].call(this, mediaType)) { var bool = true; for (j = 2; j exprCount; j++) { if (!exprs[j].call(this, view)) { bool = false; break; } } if (exprs[0].call(this, bool)) { return true; } } } return false; }; }; this._media_query_list = f_create_media_query_list; // // shortcut methods var f_matches_media_interactive = function (queries, view, thisArg) { return f_create_media_query_list(queries).call(thisArg, view, interactive ); }; this.matchesWindow = f_matches_media_interactive; var f_apply_selectors = function (selectors, root, thisArg) { selectors = f_create_selectors_group(selectors); if (! thisArg) { thisArg = { }; } thisArg.all = [ ].concat(thisArg.all || root); var result = [ ]; var es = root.getElementsByTagName( * ); var I = es.length; var i; var r; for (i = 0; i I; i++) { if ((r = selectors.call(thisArg, es[i]))) { r = r[0]; result[result.length] = r[1] || r[0]; } } return result; }; this.applySelectors = f_apply_selectors; }; 初出:2011-07-07/08/09/10/11/12、修正 2011-08-12
https://w.atwiki.jp/it_certification/pages/98.html
1. はじめに 2. VLC media playerのインストール 3. DAGについて 4. トラブル対応 1. はじめに Linux版 VLC media playerのインストール手順を記します。 CentOS 5 32bitにインストールする前提で手順を記します。 64bit版の場合やディストリビューションが異なる場合は手順を適宜変更して下さい。 2. VLC media playerのインストール 2.1. 下記、設定ファイルを編集し、DAGリポジトリを追加します。 # vi /etc/yum.repos.d/dag.repo [dag] name=Dag baseurl=http //ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag/ enabled=1 gpgcheck=1 gpgkey=http //dag.wieers.com/packages/RPM-GPG-KEY.dag.txt 2.2. VLC media playerをインストールします。 # yum install vlc 2.3. packageをダウンロードするかどうか聞かれますので、「y」と返答します。 Transaction Summary ========================================================================================== Install 50 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size 55 M Is this ok [y/N] 2.4. PGP-KEYをインポートするかどうか聞かれますので、「y」と返答します。 ------------------------------------------------------------------------------------------ Total 354 kB/s | 55 MB 02 40 警告 rpmts_HdrFromFdno ヘッダ V3 DSA signature NOKEY, key ID 6b8d79e6 dag/gpgkey | 1.6 kB 00 00 Importing GPG key 0x6B8D79E6 "Dag Wieers (Dag Apt Repository v1.0) dag@wieers.com " from http //dag.wieers.com/packages/RPM-GPG-KEY.dag.txt Is this ok [y/N] y 3. DAGについて 概要 VLC media playerをダウンロードするためには、DAGリポジトリを追加する必要があります。 Redhatが公認していないパッケージはリポジトリに公開されていません。そのため、RedhatやCentOSは、他のディストリビューションに比べて、インストールできるパッケージが少ないです。この問題を解消するのが、DAGです。DAGリポジトリを追加する事で、VLC media playerなど様々なパッケージを追加する事ができます。 DAGリポジトリの追加方法 DAGリポジトリの追加方法はいろいろあります。CentOS-Base.repoにDAGの設定を加筆する方法でも構いません。 # vi /etc/yum.repos.d/CentOS-Base.repo [dag] name=Dag baseurl=http //ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag/ enabled=1 gpgcheck=1 gpgkey=http //dag.wieers.com/packages/RPM-GPG-KEY.dag.txt また、RPMで設定する事もできます。下記RPMパッケージをインストールすると、自動的にDAGの設定が施されます。 wget http //apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.i386.rpm rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm 4. トラブル対応 proxy 設定 プロキシを使う場合は、以下環境変数を設定する必要があります。 export HTTP_PROXY="http // IP address port /" network adpterの設定 VMware, coLinuxなどの仮想環境を使う場合は、network typeに注意する必要があります。NATを使用すると、FirewallやProxyを通過できない可能性があります。